﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NHibernate;
using Castle.ActiveRecord;
using Castle.ActiveRecord.Queries;
using NHibernate.Expression;

namespace Almoxarifado.Models
{
    [ActiveRecord("[AlocacaoRecurso]")]
    public class AlocacaoRecurso : ActiveRecordBase<AlocacaoRecurso>
    {
        private int _id;       
        private Recurso _recurso;
        private ColaboradorRecurso _colaborador;
        private DateTime dtInicio;
        private DateTime dtFim;
        private int qtd;
        private bool ativo;

        [PrimaryKey]
        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }

        [BelongsTo("RecursoId")]
        public Recurso Recurso
        {
            get { return _recurso; }
            set { _recurso = value; }
        }

        [BelongsTo("ColaboradorId")]
        public ColaboradorRecurso Colaborador
        {
            get { return _colaborador; }
            set { _colaborador = value; }
        }
        [Property]
        public DateTime DtInicio
        {
            get { return dtInicio; }
            set { dtInicio = value; }
        }

        [Property]
        public DateTime DtFim
        {
            get { return dtFim; }
            set { dtFim = value; }
        }
        
        [Property]
        public int Qtd
        {
            get { return qtd; }
            set { qtd = value; }
        }

        [Property]
        public bool Ativo
        {
            get { return ativo; }
            set { ativo = value; }
        }

        public static void Salvar(AlocacaoRecurso alocacao)
        {         
            Create(alocacao);           
        }

        public static void Atualizar(AlocacaoRecurso alocacao)
        {
            Update(alocacao);
        }

        public static AlocacaoRecurso[] getAlocacoes(int idRecurso)
        {
            //return Find(Expression.Eq("RecursoId", idRecurso));

            SimpleQuery<AlocacaoRecurso> q =
                new SimpleQuery<AlocacaoRecurso>(@"from AlocacaoRecurso c where c.Recurso.Id =" + idRecurso + " Order By c.DtInicio desc");
            
            return q.Execute();
        }

        public static AlocacaoRecurso getAlocacao(int idAlocacao)
        {
            return AlocacaoRecurso.Find(idAlocacao);
        }
    }
}
